#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

//template<class T>
//void ADD(T& x,T& y)
//{
//	T tmp = x;
//	x = y;
//	y = tmp;
//}
//
//int main()
//{
//	int a = 1;
//	int b = 2;
//	ADD(a, b);
//	cout << a << " " << b << endl;
//
//	return 0;
//}

//int ADD(int x, int y)
//{
//	return x + y;
//}
//
//double ADD(double x, double y)
//{
//	return x + y;
//}
//
//template<class T>
//T ADD( T & x, T & y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int a1 = 1, a2 = 2;
//	double b1 = 1.1, b2 = 2.1;
//	ADD(a1, a2);
//	ADD(b1, b2);
//	ADD((double)a1, b1);
//
//	return 0;
//}

//class Date
//{
//public:
//	Date(int day= 1)
//	{
//		p = new int[10];
//		_day = day;
//		cout << "Date(int day=1)"<<endl;
//	}
//
//	~Date()
//	{
//		_day = 0;
//		cout << "~Date()" << endl;
//	}
//
////private:
//	int* p;
//	int _day;
//
//};
//
//int main()
//{
//	//int* p1 = new int;
//	Date* p1 = new Date;
//	cout << (p1->p)[1] << endl;
//	delete p1;
//	return 0;
//}

class Stack
{
public:
	Stack(int capacity=4)
	{
		_arr = new int[capacity];
		_top = 0;
		_capacity = capacity;
		cout << "Satck(int capacity=4)" << endl;
	}

	~Stack()
	{
		delete[] _arr;
		_top = 0;
		_capacity = 0;
		cout << "~Stack()";
	}
private:
	int* _arr;
	int _top;
	int _capacity;
};

int main()
{
	Stack *s=new Stack;
	delete s;
	return  0;
}